/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.mmaingenieria.GestorFacturacion.MySQL;

import com.mmaingenieria.GestorFacturacion.beans.Usuario;
import com.mmaingenieria.GestorFacturacion.database.MySqlDAOFactory;
import com.mmaingenieria.GestorFacturacion.exceptions.GenericaException;
import com.mmaingenieria.GestorFacturacion.interfaces.InterfaceUsuarioDAO;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.ResourceBundle;

/**
 *
 * @author Mikle
 */
public class MySqlUsuarioDAO implements InterfaceUsuarioDAO{

    
    //creamos un resouceBoundle que leera el archivo excepciones.properties
    //y segun la variable escribira una cosa u otra.
    private static ResourceBundle rb;
    
    //Construtor
    //*************************************************************************
    public MySqlUsuarioDAO() {
        //decimos que lea dicho archivo
        rb = ResourceBundle.getBundle("com.mmaingenieria.GestorFacturacion.exceptions.excepciones");
    }
    
    
    //Metodos que hay que implementar por extender de InterfaceUsuario
    //*************************************************************************
    public synchronized ArrayList<Usuario> getUsuarios() throws GenericaException {
        ArrayList<Usuario> listausuarios = null;//creo un arraylist de tipo usuarios
        Connection conexion = null;
        String sql = null;

        sql = "SELECT usuarioId, usuarioNif, usuarioNombre, usuarioApellido1,usuarioApellido2, usuarioUser, usuarioPass, usuarioMail, usuarioEstado FROM usuarios";
        //sql = "SELECT * FROM usuarios";
        try {
            conexion = MySqlDAOFactory.conectar();
        } catch (Exception ex) {
            throw new GenericaException(rb.getString("no-conexion"));
        }

        try {
            PreparedStatement stmt = conexion.prepareStatement(sql);//preparas la query
            ResultSet resultadoquery = stmt.executeQuery();//realizas la query
            listausuarios = new ArrayList<Usuario>();
            while (resultadoquery.next()) {//recorres el resultado
                listausuarios.add(instanciarUsuario(resultadoquery));//por cada recordset lo pasa a usuario y lo añades a la lista
            }
        } catch (SQLException ex) {
            throw new GenericaException(rb.getString("no-sql"));
        } finally {
            MySqlDAOFactory.desconectar(conexion);
        }

        return listausuarios;
    }
    
    
    
    
    //Metodos
    //*************************************************************************
    public Usuario instanciarUsuario(ResultSet rs) throws GenericaException {
        Usuario u = null;
        try {
            u = new Usuario();
            u.setUsuarioId(rs.getInt("usuarioId"));
            u.setUsuarioNif(rs.getString("usuarioNif"));
            u.setUsuarioNombre(rs.getString("usuarioNombre"));
            u.setUsuarioApellido1(rs.getString("usuarioApellido1"));
            u.setUsuarioApellido2(rs.getString("usuarioApellido2"));
            u.setUsuarioUser(rs.getString("usuarioUser"));
            u.setUsuarioPass(rs.getString("usuarioPass"));
            u.setUsuarioMail(rs.getString("usuarioMail"));
            u.setUsuarioEstado(rs.getInt("usuarioEstado"));
        } catch (SQLException ex) {
        }

        System.out.println(u.getUsuarioUser());
        return u;
    }
    
    
    
    
}
